Skip to content

LangChain4j


知识点清单

  • [ ] LangChain4j 是什么?与 Python LangChain 的区别?
  • [ ] 统一 API 设计:ChatModel / EmbeddingModel / ImageModel
  • [ ] AI Services 声明式调用模式
  • [ ] Tool Calling(工具调用 / Function Calling)
  • [ ] RAG(检索增强生成)的实现方式
  • [ ] Chat Memory(对话记忆)管理
  • [ ] MCP 协议支持
  • [ ] Spring Boot Starter 集成
  • [ ] 支持的 LLM 提供商有哪些?

笔记

一、定位

LangChain4j 是面向 Java / JVM 生态的 LLM 应用开发框架。它不是 Python LangChain 的简单移植,而是围绕 Java 的 接口、注解、POJO、依赖注入 和类型安全重新设计。

核心理念:让 Java 开发者用熟悉的编程范式构建 AI 应用,无需学习 Python。

二、三大核心价值

能力说明
统一 API抽象 20+ LLM 提供商(OpenAI、Anthropic、Google Gemini、Ollama、DeepSeek 等)和 30+ Embedding 存储
AI Services 模式通过声明式 Java 接口调用 LLM,类似 Spring Data JPA 的代理模式
Agentic 系统支持多智能体编排、工具调用、MCP 协议集成

三、统一 API 设计

LangChain4j 的核心抽象极其简洁,所有 LLM 提供商通过同一套接口接入:

java
// 切换模型只需换 Builder,调用代码无需改动
ChatModel model = OpenAiChatModel.builder()
    .apiKey(System.getenv("OPENAI_API_KEY"))
    .modelName("gpt-4o-mini")
    .build();
String answer = model.chat("你好!");

支持的提供商类型:

  • ChatModel(对话):OpenAI、Anthropic Claude、Google Gemini、Ollama、DeepSeek、通义千问、文心一言 等
  • EmbeddingModel(嵌入):OpenAI、Voyage、BGE、Cohere 等
  • ImageModel(图像生成):DALL-E、Stable Diffusion 等

四、AI Services(核心推荐模式)

AI Services 是 LangChain4j 最具特色的功能。通过声明式接口即可调用 LLM,框架自动生成代理实现:

java
// 定义接口
interface Assistant {
    String chat(String userMessage);
}

// 创建代理实例
Assistant assistant = AiServices.create(Assistant.class, model);
String answer = assistant.chat("解释一下 RAG");

支持的能力:

  • @SystemMessage 定义系统提示词
  • @UserMessage 定义用户消息模板
  • @Tool 注解定义可调用工具
  • @MemoryId 支持多会话记忆隔离
  • 自动序列化方法参数和返回值(支持 POJO)

五、Tool Calling

让 LLM 能够调用外部工具(API、数据库、函数等):

java
class OrderTools {
    @Tool("根据订单号查询订单状态")
    public String getOrderStatus(@P("订单号") String orderId) {
        // 实际查询逻辑
        return "订单 " + orderId + " 状态:已发货";
    }
}

Assistant assistant = AiServices.builder(Assistant.class)
    .chatModel(model)
    .tools(new OrderTools())
    .build();

LLM 会自动判断何时需要调用工具,框架负责工具执行的编排。

六、RAG 支持

检索增强生成(RAG)是 LangChain4j 的一等公民:

java
// 1. 文档加载
Document document = FileSystemDocumentLoader.loadDocument(path);

// 2. 文档切分
List<TextSegment> segments = DocumentSplitter.split(document);

// 3. 向量化存储
EmbeddingStore<TextSegment> store = new InMemoryEmbeddingStore<>();
embeddingModel.embedAll(segments).forEach(store::add);

// 4. 检索 + 生成
ContentRetriever retriever = EmbeddingStoreContentRetriever.builder()
    .embeddingStore(store)
    .embeddingModel(embeddingModel)
    .build();

AiServices.create(Assistant.class, model, retriever);

支持的 Embedding 存储:Pinecone、Weaviate、Elasticsearch、Milvus、Redis、PgVector 等 30+ 种。

七、Spring Boot 集成

xml
<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-open-ai-spring-boot-starter</artifactId>
    <version>1.14.0-beta24</version>
</dependency>
yaml
langchain4j:
  open-ai:
    api-key: ${OPENAI_API_KEY}
    model-name: gpt-4o-mini

Spring Boot 环境下,ChatModel、EmbeddingModel 等 Bean 自动配置,直接 @Autowired 即可使用。

八、与 Google ADK 的集成

2025 年 9 月,Google ADK for Java v0.2.0 正式集成 LangChain4j,开发者可在 ADK 中通过 LangChain4j 接入第三方模型(Ollama、Docker Model Runner 等)。参见 框架 Google ADK

九、适用场景

  • 智能客服 / 企业知识库问答
  • 代码审查助手 / SQL 生成
  • 订单/工单智能助手
  • 基于 Spring Boot 的 AI 后端服务